package cn.neusoft.servlet;

import cn.neusoft.bean.Orders;
import cn.neusoft.query.OrdersQuery;
import cn.neusoft.service.IOrdersService;
import cn.neusoft.service.impl.OrdersService;
import cn.neusoft.utils.IOUtils;
import cn.neusoft.utils.JsonUtils;
import cn.neusoft.vo.ResultBean;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/order")
public class OrdersServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("-------OrdersServlet------");
        IOrdersService ordersService = new OrdersService();
        
        String what = req.getParameter("what");

        //最终的响应体对象
        ResultBean resultBean = null;


        try {
            if("save".equals(what)){
                System.out.println("添加或修改订单");
                //读取输入流中的json字符串（请求体内容）
                String jsonStr = IOUtils.readStr(req.getInputStream());
                //将json字符串转成Orders对象
                Orders orders = JsonUtils.jsonStrToObj(jsonStr, "yyyy-MM-dd",Orders.class);
                if (orders.getOrderId()==null){
                    resultBean = ordersService.add(orders);
                }else {
                    resultBean = ordersService.update(orders);
                }
            }else if("del".equals(what)){
                //http://localhost:8080/orders?what=del&id=1001
                System.out.println("删除订单");
                String id = req.getParameter("id");
                resultBean = ordersService.delete(Integer.parseInt(id));
            }else if("getById".equals(what)){
                System.out.println("通过id查询订单");
                String id = req.getParameter("id");
                resultBean = ordersService.getById(Integer.parseInt(id));
            }else if("page".equals(what)){
                System.out.println("分页搜索订单");

                String jsonStr = IOUtils.readStr(req.getInputStream());
                OrdersQuery ordersQuery = JsonUtils.jsonStrToObj(jsonStr, null, OrdersQuery.class);
                resultBean = ordersService.getByPage(ordersQuery);
            } else if ("batchDel".equals(what)) {
                //批量删除获取
                String jsonStr = IOUtils.readStr(req.getInputStream());
                JSONArray jsonArray = JSONObject.parseArray(jsonStr);
                List<Integer> ids = jsonArray.toJavaList(Integer.class);
                System.out.println("json转集合："+ids);
                resultBean = ordersService.batchDel(ids);
            } else {
                System.out.println("无服务");
                resultBean = ResultBean.ERROR("no service");
            }
        } catch (Exception e) {
            e.printStackTrace();
            resultBean = ResultBean.ERROR(e.getMessage());
        }

        //将resultBean转成json字符串响应即可
        String resultJsonStr = JSONObject.toJSONString(resultBean);
        resp.getWriter().write(resultJsonStr);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
